export {}
const obj1 = {
  name: '黑马',
  age: 18,
}

// keyof + 类型
// keyof表示要获取到Obj中的所有属性，最终得到的是Obj中所有属性名称的一个联合类型
// keyof Obj =>'name' | 'age'：表示Key只能为'name'或者'age'中的一个
function getProperty<Obj, Key extends keyof Obj>(obj: Obj, key: Key) {
  // 此函数的作用：用来获取对象中的属性的值
  return obj[key]
}

getProperty(obj1, 'name')
// 错误示范：因为name2不在obj1
// getProperty(obj1, 'name2')
getProperty({ x: 1, y: 3 }, 'x')

// keyof后面跟的一定是一个类型：
type Keys = keyof typeof obj1
